// 配置路由的地方
import Vue from 'vue'
import VueRouter from 'vue-router'
// 使用插件
Vue.use(VueRouter);
import routes from './routes'
import store from '@/store'
//先把VueRouter原型对象的push，先保存一份
let originPush = VueRouter.prototype.push;
let originReplace = VueRouter.prototype.replace;
// 重写push|replace
//第一个参数:告诉原来push方法，你往哪里跳转（传递哪些参数)
// 第二个参数：成功回调
// 第三个参数：失败回调
// call || apply区别
//相同点，都可以调用函数一次，都可以篡改函数的上下文一次
//不同点: call与apply传递参数: call传递参数用逗号隔开，apply方法执行，传递数组
VueRouter.prototype.push = function (location, resolve, reject) {
    if (resolve && reject) {
        originPush.call(this, location, resolve, reject);
    } else {
        originPush.call(this, location, () => { }, () => { });
    }
}
VueRouter.prototype.replace = function (location, resolve, reject) {
    if (resolve && reject) {
        originReplace.call(this, location, resolve, reject);
    } else {
        originReplace.call(this, location, () => { }, () => { });
    }
}

// 配置路由
let router = new VueRouter({
    // 配置路由
    routes,
    scrollBehavior(to, from, savedPosition) {
        // 始终滚动到顶部
        return { y: 0 }
    },
})
// 全局守卫:前置守卫（在路由跳转之间进行判断）

// router.beforeEach(async (to, from, next) => {
//     let token = store.state.user.token
//     let name = store.state.user.UserInfo.name
//     // 登录了
//     if (token) {
//         // 登录之后不能再去登陆注册页面了
//         if (to.path == '/login' || to.path == '/register') {
//             next('/home')
//             // 登录了，判断是否有用户信息
//         } else {
//             // 有
//             if (name) {
//                 next()
//                 // 没有。发送请求获取用户信息
//             } else {
//                 try {
//                     await store.dispatch("UserInfo");
//                     next()
//                     // token失效了，要先清空再登录
//                 } catch (error) {
//                     await store.dispatch("Logout");
//                     next('/login')
//                 }

//             }
//         }
//     } else {
//         let toPath = to.path
//         // console.log(toPath)
//         // 没有登录，不能去trade.pay.paySuccess.center.MyOrder....
//         if (toPath.indexOf('/trade') != -1 || toPath.indexOf('/pay') != -1 || toPath.indexOf('/center') != -1) {
//             next('/login?redirect=' + toPath)
//         } else {
//             next()
//         }
//     }

// })

export default router